package com.gscitysfy.cus.drain.modules.inspection.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gscitysfy.cus.drain.modules.common.vo.PageVo;
import com.gscitysfy.cus.drain.modules.inspection.entity.DrainInspectionMnOrder;
import com.gscitysfy.cus.drain.modules.inspection.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author Administrator
 * @since 2022-10-14 16:15:41
 */
public interface IDrainInspectionMnOrderService extends IService<DrainInspectionMnOrder> {

    /**
     * 获取分页信息
     *
     * @param queryVo 条件
     * @return IPage<DrainInspectionMnOrder> 分页数据
     */
    IPage<DrainInspectionMnOrder> pageList(DrainInspectionMnOrderQueryVo queryVo);

    /**
     * 获取详情
     *
     * @param id 任务单id
     * @return DrainInspectionMnOrderDetailVo 数据
     */
    DrainInspectionMnOrderDetailVo detailById(Long id);

    /**
     * 删除任务单
     *
     * @param ids 任务单id 多个id逗号分割
     * @return boolean 布尔值
     */
    boolean deleteByIds(String ids);

    /**
     * 复核任务单
     *
     * @param id      计划id
     * @param state   审核状态
     * @param comment 审核意见
     * @return Boolean 布尔值
     */
    boolean reAudit(Long id, Integer state, String comment);

    /**
     * 获取当日得待办任务单
     *
     * @param page 分页信息
     * @return IPage<DrainInspectionMnOrder> 分页数据
     */
    IPage<DrainInspectionMnOrder> todayTodo(PageVo page);

    /**
     * 勾选导出
     *
     * @param ids      任务单id，多个id逗号分隔
     * @param response 响应
     */
    void exportInfos(String ids, HttpServletResponse response);

    /**
     * 查看生成详情
     *
     * @param id 任务单id
     * @return DrainInspectionMnOrderVo
     */
    DrainInspectionMnOrderVo reGenerateDetail(Long id);

    /**
     * 重新生成维养单
     *
     * @param orderVo 维养单数据
     * @return Boolean 布尔值
     */
    boolean reGenerate(DrainInspectionMnOrderVo orderVo);

    /**
     * 处置接口
     *
     * @param disposeVo 处置信息
     * @return boolean 布尔值
     */
    boolean dispose(DrainInspectionMnOrderDisposeVo disposeVo);

    /**
     * 查询app端列表
     *
     * @param queryVo 查询条件
     * @return IPage 分页数据
     */
    IPage<DrainInspectionMnOrder> getAppPageList(AppQueryVo queryVo);

    /**
     * 统计问题依据
     *
     * @return List 列表数据
     */
    List<MiniProgramCountVo> countProblemBasis();

    /**
     * 点击开始处置修改状态
     *
     * @param id 维养单id
     * @return boolean 布尔值
     */
    boolean updateState(Long id);

    /**
     * 小程序统计
     *
     * @return List 列表
     */
    List<MiniProgramCountVo> miniProgramCount();
}

